"""
函数式编程
"""

# 高级函数，以某种方式操作其他函数或以函数作为参数和/或返回值的函数
from functools import reduce
print(abs)
print(abs(-3))
f1 = abs
print(f1(-4))


def f2(x, y, f):
    return f(x) + f(y)


print(f2(-15, 7, abs))

# map 函数: 对可迭代对象中的每个元素应用一个函数
def f3(x):
    return x * x


r1 = map(f3, range(10))
print(list(r1))

# reduce 函数: 对一个集合（如列表、数组）中的元素进行累积计算，通过连续地应用一个二元操作符（一个接受两个参数的函数）将所有元素“折叠”成一个单一的最终结果
def f4(x, y):
    return x * 10 + y


r2 = reduce(f4, range(10))
print(r2)

# filter 函数
print(list(filter(lambda x: x % 2 == 0, range(10))))

# sorted 函数
print(sorted([36, 5, -12, 9, -21]))
print(sorted([36, 5, -12, 9, -21], key=abs))
print(sorted([36, 5, -12, 9, -21], key=abs, reverse=True))
